package com.tancire.question.service;

import java.util.List;

import com.tancire.question.domain.TrainExam;
import com.tancire.question.domain.TrainProblem;

/**
 * 答题题目Service接口
 *
 * @author tancire
 * @date 2024-10-09
 */
public interface ITrainProblemService {
    /**
     * 查询答题题目
     *
     * @param id 答题题目主键
     * @return 答题题目
     */
    TrainProblem selectTrainProblemById(Long id);

    /**
     * 查询答题题目列表
     *
     * @param trainProblem 答题题目
     * @return 答题题目集合
     */
    List<TrainProblem> selectTrainProblemList(TrainProblem trainProblem);

    /**
     * 新增答题题目
     *
     * @param trainProblem 答题题目
     * @return 结果
     */
    int insertTrainProblem(TrainProblem trainProblem);

    /**
     * 修改答题题目
     *
     * @param trainProblem 答题题目
     * @return 结果
     */
    int updateTrainProblem(TrainProblem trainProblem);

    /**
     * 批量删除答题题目
     *
     * @param ids 需要删除的答题题目主键集合
     * @return 结果
     */
    int deleteTrainProblemByIds(Long[] ids);

    /**
     * 删除答题题目信息
     *
     * @param id 答题题目主键
     * @return 结果
     */
    int deleteTrainProblemById(Long id);

    /**
     * 获取这一个题
     *
     * @param trainProblem
     * @return
     */
    TrainProblem selectNextProblem(TrainProblem trainProblem);

    /**
     * 查询题目数量
     *
     * @param trainProblem
     * @return
     */
    Integer selectProblemCount(TrainProblem trainProblem);

    /**
     * 随机构建题目
     *
     * @param trainExam
     * @return
     */
    List<TrainProblem> buildExam(TrainExam trainExam);

    /**
     * 加入错题本
     *
     * @param trainProblem
     */
    void addErrorProblem(TrainProblem trainProblem);

    /**
     * 查询排除活动项目的数据
     *
     * @param trainProblem
     * @return
     */
    List<TrainProblem> selectTrainProblemListExtr(TrainProblem trainProblem);

    /**
     * 从错题本移除
     *
     * @param id
     */
    void removeErrorProblem(Long id);
}
